<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.8.6"/>
<title>3dchess: GamePlay Class Reference</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/search.js"></script>
<script type="text/javascript">
  $(document).ready(function() { searchBox.OnSelectItem(0); });
</script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
 <tbody>
 <tr style="height: 56px;">
  <td style="padding-left: 0.5em;">
   <div id="projectname">3dchess
   </div>
   <div id="projectbrief">Basic chess application with OpenGL graphics and AI</div>
  </td>
 </tr>
 </tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.6 -->
<script type="text/javascript">
var searchBox = new SearchBox("searchBox", "search",false,'Search');
</script>
  <div id="navrow1" class="tabs">
    <ul class="tablist">
      <li><a href="index.html"><span>Main&#160;Page</span></a></li>
      <li><a href="namespaces.html"><span>Namespaces</span></a></li>
      <li class="current"><a href="annotated.html"><span>Classes</span></a></li>
      <li><a href="files.html"><span>Files</span></a></li>
      <li>
        <div id="MSearchBox" class="MSearchBoxInactive">
        <span class="left">
          <img id="MSearchSelect" src="search/mag_sel.png"
               onmouseover="return searchBox.OnSearchSelectShow()"
               onmouseout="return searchBox.OnSearchSelectHide()"
               alt=""/>
          <input type="text" id="MSearchField" value="Search" accesskey="S"
               onfocus="searchBox.OnSearchFieldFocus(true)" 
               onblur="searchBox.OnSearchFieldFocus(false)" 
               onkeyup="searchBox.OnSearchFieldChange(event)"/>
          </span><span class="right">
            <a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a>
          </span>
        </div>
      </li>
    </ul>
  </div>
  <div id="navrow2" class="tabs2">
    <ul class="tablist">
      <li><a href="annotated.html"><span>Class&#160;List</span></a></li>
      <li><a href="classes.html"><span>Class&#160;Index</span></a></li>
      <li><a href="hierarchy.html"><span>Class&#160;Hierarchy</span></a></li>
      <li><a href="functions.html"><span>Class&#160;Members</span></a></li>
    </ul>
  </div>
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
     onmouseover="return searchBox.OnSearchSelectShow()"
     onmouseout="return searchBox.OnSearchSelectHide()"
     onkeydown="return searchBox.OnSearchSelectKey(event)">
<a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(0)"><span class="SelectionMark">&#160;</span>All</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(1)"><span class="SelectionMark">&#160;</span>Classes</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(2)"><span class="SelectionMark">&#160;</span>Namespaces</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(3)"><span class="SelectionMark">&#160;</span>Functions</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(4)"><span class="SelectionMark">&#160;</span>Variables</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(5)"><span class="SelectionMark">&#160;</span>Typedefs</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(6)"><span class="SelectionMark">&#160;</span>Enumerations</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(7)"><span class="SelectionMark">&#160;</span>Enumerator</a></div>

<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<iframe src="javascript:void(0)" frameborder="0" 
        name="MSearchResults" id="MSearchResults">
</iframe>
</div>

</div><!-- top -->
<div class="header">
  <div class="summary">
<a href="#nested-classes">Classes</a> &#124;
<a href="#pub-types">Public Types</a> &#124;
<a href="#pub-methods">Public Member Functions</a> &#124;
<a href="#pri-types">Private Types</a> &#124;
<a href="#pri-methods">Private Member Functions</a> &#124;
<a href="#pri-attribs">Private Attributes</a> &#124;
<a href="class_game_play-members.html">List of all members</a>  </div>
  <div class="headertitle">
<div class="title">GamePlay Class Reference</div>  </div>
</div><!--header-->
<div class="contents">

<p>Class which holds the state <a class="el" href="class_game_play.html" title="Class which holds the state GamePlay. ">GamePlay</a>.  
 <a href="class_game_play.html#details">More...</a></p>

<p><code>#include &lt;<a class="el" href="_game_play_8h_source.html">GamePlay.h</a>&gt;</code></p>
<div class="dynheader">
Inheritance diagram for GamePlay:</div>
<div class="dyncontent">
 <div class="center">
  <img src="class_game_play.png" usemap="#GamePlay_map" alt=""/>
  <map id="GamePlay_map" name="GamePlay_map">
<area href="class_abstract_state.html" title="Interface for modelling a game state. " alt="AbstractState" shape="rect" coords="0,0,87,24"/>
</map>
 </div></div>
<table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="nested-classes"></a>
Classes</h2></td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="struct_game_play_1_1_captured_pieces.html">CapturedPieces</a></td></tr>
<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">Struct that contains all captured pieces for the black and white player as also the OpenGL display lists for the black/white bars.  <a href="struct_game_play_1_1_captured_pieces.html#details">More...</a><br/></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="struct_game_play_1_1_keyboard_counter.html">KeyboardCounter</a></td></tr>
<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">To stop triggering keys too often, this counter helps to delay each key stroke.  <a href="struct_game_play_1_1_keyboard_counter.html#details">More...</a><br/></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="struct_game_play_1_1_message_box.html">MessageBox</a></td></tr>
<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">Struct that represents the message box on the top.  <a href="struct_game_play_1_1_message_box.html#details">More...</a><br/></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="struct_game_play_1_1_player_turn.html">PlayerTurn</a></td></tr>
<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">Struct which represents a players turn.  <a href="struct_game_play_1_1_player_turn.html#details">More...</a><br/></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-types"></a>
Public Types</h2></td></tr>
<tr class="memitem:a9bbbd1c2193ee3046f1b0f25035fa616"><td class="memItemLeft" align="right" valign="top">enum &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_game_play.html#a9bbbd1c2193ee3046f1b0f25035fa616">GameMode</a> { <b>AI_VS_AI</b>, 
<b>PLAYER_VS_AI</b>
 }</td></tr>
<tr class="memdesc:a9bbbd1c2193ee3046f1b0f25035fa616"><td class="mdescLeft">&#160;</td><td class="mdescRight">The possible game modes to chose. <br/></td></tr>
<tr class="separator:a9bbbd1c2193ee3046f1b0f25035fa616"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-methods"></a>
Public Member Functions</h2></td></tr>
<tr class="memitem:aac535480eb47e416b1bb0cd6c566043b"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_game_play.html#aac535480eb47e416b1bb0cd6c566043b">GamePlay</a> (<a class="el" href="class_game_play.html#a9bbbd1c2193ee3046f1b0f25035fa616">GameMode</a> mode, PlayerColor humanPlayerColor, std::string initialFen=&quot;&quot;)</td></tr>
<tr class="memdesc:aac535480eb47e416b1bb0cd6c566043b"><td class="mdescLeft">&#160;</td><td class="mdescRight">Creates a new game.  <a href="#aac535480eb47e416b1bb0cd6c566043b">More...</a><br/></td></tr>
<tr class="separator:aac535480eb47e416b1bb0cd6c566043b"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a265e1c47781f3ab890a648c9811738d7"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_game_play.html#a265e1c47781f3ab890a648c9811738d7">enter</a> () override</td></tr>
<tr class="memdesc:a265e1c47781f3ab890a648c9811738d7"><td class="mdescLeft">&#160;</td><td class="mdescRight">Enters the state for the first time.  <a href="#a265e1c47781f3ab890a648c9811738d7">More...</a><br/></td></tr>
<tr class="separator:a265e1c47781f3ab890a648c9811738d7"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aa488735535fde3fa3ac41ee94112141e"><td class="memItemLeft" align="right" valign="top"><a class="el" href="class_abstract_state.html">AbstractState</a> *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_game_play.html#aa488735535fde3fa3ac41ee94112141e">run</a> () override</td></tr>
<tr class="memdesc:aa488735535fde3fa3ac41ee94112141e"><td class="mdescLeft">&#160;</td><td class="mdescRight">Runs the current state and does all the work.  <a href="#aa488735535fde3fa3ac41ee94112141e">More...</a><br/></td></tr>
<tr class="separator:aa488735535fde3fa3ac41ee94112141e"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:af635ce486e5bc9b3bdf21241f6737000"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_game_play.html#af635ce486e5bc9b3bdf21241f6737000">exit</a> () override</td></tr>
<tr class="memdesc:af635ce486e5bc9b3bdf21241f6737000"><td class="mdescLeft">&#160;</td><td class="mdescRight">Exits the current state and cleans up all allocated resources.  <a href="#af635ce486e5bc9b3bdf21241f6737000">More...</a><br/></td></tr>
<tr class="separator:af635ce486e5bc9b3bdf21241f6737000"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a4cb5373f35672dd1112e41fd48e46e57"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a4cb5373f35672dd1112e41fd48e46e57"></a>
void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_game_play.html#a4cb5373f35672dd1112e41fd48e46e57">draw</a> ()</td></tr>
<tr class="memdesc:a4cb5373f35672dd1112e41fd48e46e57"><td class="mdescLeft">&#160;</td><td class="mdescRight">Draws all relevant and state related stuff on the screen. <br/></td></tr>
<tr class="separator:a4cb5373f35672dd1112e41fd48e46e57"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a7cfdf90a24b76b71d01d292337e080ee"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_game_play.html#a7cfdf90a24b76b71d01d292337e080ee">startShowText</a> (std::string text)</td></tr>
<tr class="memdesc:a7cfdf90a24b76b71d01d292337e080ee"><td class="mdescLeft">&#160;</td><td class="mdescRight">Call this function to draw text on the right bottom side of the viewport.  <a href="#a7cfdf90a24b76b71d01d292337e080ee">More...</a><br/></td></tr>
<tr class="separator:a7cfdf90a24b76b71d01d292337e080ee"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a0f24d5ef62fec459a516bd4106a67ee4"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_game_play.html#a0f24d5ef62fec459a516bd4106a67ee4">switchToPlayerColor</a> (PlayerColor color)</td></tr>
<tr class="memdesc:a0f24d5ef62fec459a516bd4106a67ee4"><td class="mdescLeft">&#160;</td><td class="mdescRight">When the other player is on turn, this method switched the camera position and shows a small text message which player is on turn.  <a href="#a0f24d5ef62fec459a516bd4106a67ee4">More...</a><br/></td></tr>
<tr class="separator:a0f24d5ef62fec459a516bd4106a67ee4"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a18222d37c08887971467a535226c6b72"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_game_play.html#a18222d37c08887971467a535226c6b72">setState</a> (std::array&lt; <a class="el" href="struct_piece.html">Piece</a>, 64 &gt; state, PlayerColor lastPlayer, <a class="el" href="class_turn.html">Turn</a> lastTurn)</td></tr>
<tr class="memdesc:a18222d37c08887971467a535226c6b72"><td class="mdescLeft">&#160;</td><td class="mdescRight">Method for setting the new chess state.  <a href="#a18222d37c08887971467a535226c6b72">More...</a><br/></td></tr>
<tr class="separator:a18222d37c08887971467a535226c6b72"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a046a12f0d7ceb61f4de3ba4cd1ca9b36"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_game_play.html#a046a12f0d7ceb61f4de3ba4cd1ca9b36">setState</a> (std::array&lt; <a class="el" href="struct_piece.html">Piece</a>, 64 &gt; state)</td></tr>
<tr class="memdesc:a046a12f0d7ceb61f4de3ba4cd1ca9b36"><td class="mdescLeft">&#160;</td><td class="mdescRight">Method for setting the new chess state.  <a href="#a046a12f0d7ceb61f4de3ba4cd1ca9b36">More...</a><br/></td></tr>
<tr class="separator:a046a12f0d7ceb61f4de3ba4cd1ca9b36"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ac9a17da80920462436ef112ff66a77d5"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_game_play.html#ac9a17da80920462436ef112ff66a77d5">setGameState</a> (const <a class="el" href="class_game_state.html">GameState</a> &amp;gameState)</td></tr>
<tr class="memdesc:ac9a17da80920462436ef112ff66a77d5"><td class="mdescLeft">&#160;</td><td class="mdescRight">Sets the game state to the given one.  <a href="#ac9a17da80920462436ef112ff66a77d5">More...</a><br/></td></tr>
<tr class="separator:ac9a17da80920462436ef112ff66a77d5"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a485bd261cd18ef597db289f129ce7c70"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_game_play.html#a485bd261cd18ef597db289f129ce7c70">onPlayerIsOnTurn</a> (PlayerColor who)</td></tr>
<tr class="memdesc:a485bd261cd18ef597db289f129ce7c70"><td class="mdescLeft">&#160;</td><td class="mdescRight">This method changed the internal state to interact with a human player if the game mode is PLAYER_VS_AI.  <a href="#a485bd261cd18ef597db289f129ce7c70">More...</a><br/></td></tr>
<tr class="separator:a485bd261cd18ef597db289f129ce7c70"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a84f872fda46a5fc467744a1b4c404c47"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_game_play.html#a84f872fda46a5fc467744a1b4c404c47">onPlayerAbortTurn</a> ()</td></tr>
<tr class="memdesc:a84f872fda46a5fc467744a1b4c404c47"><td class="mdescLeft">&#160;</td><td class="mdescRight">If the human player aborts his current turn, this method switches to the AI player.  <a href="#a84f872fda46a5fc467744a1b4c404c47">More...</a><br/></td></tr>
<tr class="separator:a84f872fda46a5fc467744a1b4c404c47"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:acc1dfc5a3291fac745a7811d36a26ad5"><td class="memItemLeft" align="right" valign="top">std::future&lt; <a class="el" href="class_turn.html">Turn</a> &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_game_play.html#acc1dfc5a3291fac745a7811d36a26ad5">doMakePlayerTurn</a> ()</td></tr>
<tr class="memdesc:acc1dfc5a3291fac745a7811d36a26ad5"><td class="mdescLeft">&#160;</td><td class="mdescRight">Tells the human to make a turn.  <a href="#acc1dfc5a3291fac745a7811d36a26ad5">More...</a><br/></td></tr>
<tr class="separator:acc1dfc5a3291fac745a7811d36a26ad5"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pri-types"></a>
Private Types</h2></td></tr>
<tr class="memitem:a5980fe6836e5b78acc8bbbec79d659c6"><td class="memItemLeft" align="right" valign="top">enum &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_game_play.html#a5980fe6836e5b78acc8bbbec79d659c6">States</a> { <b>KEEP_CURRENT</b>, 
<b>BACK_TO_MENU</b>
 }</td></tr>
<tr class="memdesc:a5980fe6836e5b78acc8bbbec79d659c6"><td class="mdescLeft">&#160;</td><td class="mdescRight">The main states for the <a class="el" href="class_state_machine.html" title="Class which manages the states. ">StateMachine</a>. <br/></td></tr>
<tr class="separator:a5980fe6836e5b78acc8bbbec79d659c6"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a74b1558e794d5ae8e60381c33111f05f"><td class="memItemLeft" align="right" valign="top">enum &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_game_play.html#a74b1558e794d5ae8e60381c33111f05f">InternalState</a> { <b>AI_ON_TURN</b>, 
<b>PLAYER_ON_TURN</b>, 
<b>PAUSE</b>, 
<b>SAVE_GAME</b>
 }</td></tr>
<tr class="memdesc:a74b1558e794d5ae8e60381c33111f05f"><td class="mdescLeft">&#160;</td><td class="mdescRight">Internal state in the <a class="el" href="class_game_play.html" title="Class which holds the state GamePlay. ">GamePlay</a> class. <br/></td></tr>
<tr class="separator:a74b1558e794d5ae8e60381c33111f05f"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a66aa55b2891b88080aef650bd0a42bdb"><td class="memItemLeft" align="right" valign="top">enum &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_game_play.html#a66aa55b2891b88080aef650bd0a42bdb">PlayerState</a> { <b>NONE</b>, 
<b>CHOOSE_PROMOTION_TURN</b>
 }</td></tr>
<tr class="memdesc:a66aa55b2891b88080aef650bd0a42bdb"><td class="mdescLeft">&#160;</td><td class="mdescRight">Internal player state (only available if the game mode is PLAYER_VS_AI). <br/></td></tr>
<tr class="separator:a66aa55b2891b88080aef650bd0a42bdb"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pri-methods"></a>
Private Member Functions</h2></td></tr>
<tr class="memitem:ae5056701f898482fc4dc076f683f5920"><td class="memItemLeft" align="right" valign="top">string&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_game_play.html#ae5056701f898482fc4dc076f683f5920">getPieceName</a> (int pieceNumber)</td></tr>
<tr class="memdesc:ae5056701f898482fc4dc076f683f5920"><td class="mdescLeft">&#160;</td><td class="mdescRight">The functions returns the name of the piece/model for the given number.  <a href="#ae5056701f898482fc4dc076f683f5920">More...</a><br/></td></tr>
<tr class="separator:ae5056701f898482fc4dc076f683f5920"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ac0d63c746a0fa07b9c29aaa9795e4a21"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ac0d63c746a0fa07b9c29aaa9795e4a21"></a>
void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_game_play.html#ac0d63c746a0fa07b9c29aaa9795e4a21">initLighting</a> ()</td></tr>
<tr class="memdesc:ac0d63c746a0fa07b9c29aaa9795e4a21"><td class="mdescLeft">&#160;</td><td class="mdescRight">Initializes the OpenGL lightning for the scene. <br/></td></tr>
<tr class="separator:ac0d63c746a0fa07b9c29aaa9795e4a21"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a9e52fde6bab37c0d3dbb6394d7219c82"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a9e52fde6bab37c0d3dbb6394d7219c82"></a>
void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_game_play.html#a9e52fde6bab37c0d3dbb6394d7219c82">initChessSet</a> ()</td></tr>
<tr class="memdesc:a9e52fde6bab37c0d3dbb6394d7219c82"><td class="mdescLeft">&#160;</td><td class="mdescRight">Initializes the whole chess set (all models and chess board). <br/></td></tr>
<tr class="separator:a9e52fde6bab37c0d3dbb6394d7219c82"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:afd53f5e1f41821e947ad68d6f008a379"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="afd53f5e1f41821e947ad68d6f008a379"></a>
void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_game_play.html#afd53f5e1f41821e947ad68d6f008a379">initAnimationHelpers</a> ()</td></tr>
<tr class="memdesc:afd53f5e1f41821e947ad68d6f008a379"><td class="mdescLeft">&#160;</td><td class="mdescRight">Initializes all the animation helpers. <br/></td></tr>
<tr class="separator:afd53f5e1f41821e947ad68d6f008a379"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a17cf0810ad681633a3ff67def789bc85"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a17cf0810ad681633a3ff67def789bc85"></a>
void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_game_play.html#a17cf0810ad681633a3ff67def789bc85">initMenuPause</a> ()</td></tr>
<tr class="memdesc:a17cf0810ad681633a3ff67def789bc85"><td class="mdescLeft">&#160;</td><td class="mdescRight">Initializes the main pause menu with all the buttons. <br/></td></tr>
<tr class="separator:a17cf0810ad681633a3ff67def789bc85"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a53238b9aad252b32ed4bece1992432d3"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a53238b9aad252b32ed4bece1992432d3"></a>
void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_game_play.html#a53238b9aad252b32ed4bece1992432d3">initMenuSaveGame</a> ()</td></tr>
<tr class="memdesc:a53238b9aad252b32ed4bece1992432d3"><td class="mdescLeft">&#160;</td><td class="mdescRight">Initializes the save pause menu with all the buttons. <br/></td></tr>
<tr class="separator:a53238b9aad252b32ed4bece1992432d3"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ac76b49dd34751135cd885367c5defe4f"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ac76b49dd34751135cd885367c5defe4f"></a>
void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_game_play.html#ac76b49dd34751135cd885367c5defe4f">initPlayers</a> ()</td></tr>
<tr class="memdesc:ac76b49dd34751135cd885367c5defe4f"><td class="mdescLeft">&#160;</td><td class="mdescRight">Initializes the players depending on the game mode. <br/></td></tr>
<tr class="separator:ac76b49dd34751135cd885367c5defe4f"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a8e7a86f69d354aec784c8b79a7bcc5c2"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a8e7a86f69d354aec784c8b79a7bcc5c2"></a>
void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_game_play.html#a8e7a86f69d354aec784c8b79a7bcc5c2">initGameLogic</a> ()</td></tr>
<tr class="memdesc:a8e7a86f69d354aec784c8b79a7bcc5c2"><td class="mdescLeft">&#160;</td><td class="mdescRight">Initializes the game logic depending on the human player color and given FEN game state. <br/></td></tr>
<tr class="separator:a8e7a86f69d354aec784c8b79a7bcc5c2"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ae7d4ceb1d99b0d5cd8e81edf4623822f"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ae7d4ceb1d99b0d5cd8e81edf4623822f"></a>
void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_game_play.html#ae7d4ceb1d99b0d5cd8e81edf4623822f">initMessageBox</a> ()</td></tr>
<tr class="memdesc:ae7d4ceb1d99b0d5cd8e81edf4623822f"><td class="mdescLeft">&#160;</td><td class="mdescRight">Initializes the message box to show text to the human player. <br/></td></tr>
<tr class="separator:ae7d4ceb1d99b0d5cd8e81edf4623822f"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a541015f965135235c8b17e704908eef0"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a541015f965135235c8b17e704908eef0"></a>
void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_game_play.html#a541015f965135235c8b17e704908eef0">initCamera</a> ()</td></tr>
<tr class="memdesc:a541015f965135235c8b17e704908eef0"><td class="mdescLeft">&#160;</td><td class="mdescRight">Initializes the camera rotation and initial position. <br/></td></tr>
<tr class="separator:a541015f965135235c8b17e704908eef0"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a2984d942ffee50a5c1911a0bce9294d9"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a2984d942ffee50a5c1911a0bce9294d9"></a>
void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_game_play.html#a2984d942ffee50a5c1911a0bce9294d9">initCapturedPieces</a> ()</td></tr>
<tr class="memdesc:a2984d942ffee50a5c1911a0bce9294d9"><td class="mdescLeft">&#160;</td><td class="mdescRight">Initializes the widget for the captures pieces to show on the HUD for the human player. <br/></td></tr>
<tr class="separator:a2984d942ffee50a5c1911a0bce9294d9"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a21dced2f42338f59198c44a84e3f151a"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_game_play.html#a21dced2f42338f59198c44a84e3f151a">initPieceCounters</a> (<a class="el" href="class_game_state.html">GameState</a> &amp;initialGameState)</td></tr>
<tr class="memdesc:a21dced2f42338f59198c44a84e3f151a"><td class="mdescLeft">&#160;</td><td class="mdescRight">Initializes the counters for the stricken models.  <a href="#a21dced2f42338f59198c44a84e3f151a">More...</a><br/></td></tr>
<tr class="separator:a21dced2f42338f59198c44a84e3f151a"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a55a05169e47f5e9a7114b702842f151d"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a55a05169e47f5e9a7114b702842f151d"></a>
void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_game_play.html#a55a05169e47f5e9a7114b702842f151d">fadeBackgroundForOneTime</a> ()</td></tr>
<tr class="memdesc:a55a05169e47f5e9a7114b702842f151d"><td class="mdescLeft">&#160;</td><td class="mdescRight">Faded the background for exactly one time, when the game starts. <br/></td></tr>
<tr class="separator:a55a05169e47f5e9a7114b702842f151d"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a68f3666e621c5014adb31332d2dd04dd"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a68f3666e621c5014adb31332d2dd04dd"></a>
void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_game_play.html#a68f3666e621c5014adb31332d2dd04dd">resetCapturedPieces</a> ()</td></tr>
<tr class="memdesc:a68f3666e621c5014adb31332d2dd04dd"><td class="mdescLeft">&#160;</td><td class="mdescRight">Sets the number of captured pieces to zero for each color. <br/></td></tr>
<tr class="separator:a68f3666e621c5014adb31332d2dd04dd"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ad64b4b67f4c32063bc7278ba5b392545"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ad64b4b67f4c32063bc7278ba5b392545"></a>
void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_game_play.html#ad64b4b67f4c32063bc7278ba5b392545">rotateCamera</a> ()</td></tr>
<tr class="memdesc:ad64b4b67f4c32063bc7278ba5b392545"><td class="mdescLeft">&#160;</td><td class="mdescRight">Rotates the camera with an animation helper if necessary and only if the animation time is not over. <br/></td></tr>
<tr class="separator:ad64b4b67f4c32063bc7278ba5b392545"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a92f38333245c2e802ab081718b84ab96"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_game_play.html#a92f38333245c2e802ab081718b84ab96">setCameraPosition</a> (float degree)</td></tr>
<tr class="memdesc:a92f38333245c2e802ab081718b84ab96"><td class="mdescLeft">&#160;</td><td class="mdescRight">Calculates the new camera coordinates from a given degree between 0-360 deg and positions the camera in the world space with respect to the animated rotation around the Y-axis.  <a href="#a92f38333245c2e802ab081718b84ab96">More...</a><br/></td></tr>
<tr class="separator:a92f38333245c2e802ab081718b84ab96"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aca425c767b227b7c8a30c08131c8535c"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="aca425c767b227b7c8a30c08131c8535c"></a>
void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_game_play.html#aca425c767b227b7c8a30c08131c8535c">draw2D</a> ()</td></tr>
<tr class="memdesc:aca425c767b227b7c8a30c08131c8535c"><td class="mdescLeft">&#160;</td><td class="mdescRight">Does all the 2D drawing action like menu, widgets and text rendering. <br/></td></tr>
<tr class="separator:aca425c767b227b7c8a30c08131c8535c"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a4349f2b164b3e34050b0db62b17d8bbe"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a4349f2b164b3e34050b0db62b17d8bbe"></a>
void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_game_play.html#a4349f2b164b3e34050b0db62b17d8bbe">draw3D</a> ()</td></tr>
<tr class="memdesc:a4349f2b164b3e34050b0db62b17d8bbe"><td class="mdescLeft">&#160;</td><td class="mdescRight">Does all the 3D drawing action like chess board, models and so on. <br/></td></tr>
<tr class="separator:a4349f2b164b3e34050b0db62b17d8bbe"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a48208598d9b96e4ae2c0edc4297e339f"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a48208598d9b96e4ae2c0edc4297e339f"></a>
void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_game_play.html#a48208598d9b96e4ae2c0edc4297e339f">drawMessageBox</a> ()</td></tr>
<tr class="memdesc:a48208598d9b96e4ae2c0edc4297e339f"><td class="mdescLeft">&#160;</td><td class="mdescRight">Draws the message box at the initialized position and the set text. <br/></td></tr>
<tr class="separator:a48208598d9b96e4ae2c0edc4297e339f"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a7c7414aff1c119e7e1faeb8d5e30ada6"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a7c7414aff1c119e7e1faeb8d5e30ada6"></a>
void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_game_play.html#a7c7414aff1c119e7e1faeb8d5e30ada6">drawLastTurns</a> ()</td></tr>
<tr class="memdesc:a7c7414aff1c119e7e1faeb8d5e30ada6"><td class="mdescLeft">&#160;</td><td class="mdescRight">Draws the last fice turns on the left bottom side of the viewport. <br/></td></tr>
<tr class="separator:a7c7414aff1c119e7e1faeb8d5e30ada6"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a31b412528f8da62316bea55169626d3c"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a31b412528f8da62316bea55169626d3c"></a>
void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_game_play.html#a31b412528f8da62316bea55169626d3c">drawInfoBox</a> (string msg)</td></tr>
<tr class="memdesc:a31b412528f8da62316bea55169626d3c"><td class="mdescLeft">&#160;</td><td class="mdescRight">Draws the info string on the right bottom side of the viewport to show some extra information. <br/></td></tr>
<tr class="separator:a31b412528f8da62316bea55169626d3c"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ad4ae2ed87e9393f31ff75b4525471fa3"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ad4ae2ed87e9393f31ff75b4525471fa3"></a>
void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_game_play.html#ad4ae2ed87e9393f31ff75b4525471fa3">drawCapturedPieces</a> ()</td></tr>
<tr class="memdesc:ad4ae2ed87e9393f31ff75b4525471fa3"><td class="mdescLeft">&#160;</td><td class="mdescRight">Draws all the captured pieces statistic for the black and white player on the left top and right top side of the viewport. <br/></td></tr>
<tr class="separator:ad4ae2ed87e9393f31ff75b4525471fa3"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ab1d524742db2bd3a105eae31548e8393"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ab1d524742db2bd3a105eae31548e8393"></a>
void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_game_play.html#ab1d524742db2bd3a105eae31548e8393">drawPauseMenu</a> ()</td></tr>
<tr class="memdesc:ab1d524742db2bd3a105eae31548e8393"><td class="mdescLeft">&#160;</td><td class="mdescRight">Draws the pause menu. <br/></td></tr>
<tr class="separator:ab1d524742db2bd3a105eae31548e8393"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a348051912d73e2501e02478913c723c3"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a348051912d73e2501e02478913c723c3"></a>
void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_game_play.html#a348051912d73e2501e02478913c723c3">drawPlayerActions</a> ()</td></tr>
<tr class="memdesc:a348051912d73e2501e02478913c723c3"><td class="mdescLeft">&#160;</td><td class="mdescRight">Draws the human-interaction things like colorized tiles when a model is selected or the cursor-highlight-tile to choose a model. <br/></td></tr>
<tr class="separator:a348051912d73e2501e02478913c723c3"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:acf9363543bc52ac3866f4520d695b23a"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="acf9363543bc52ac3866f4520d695b23a"></a>
void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_game_play.html#acf9363543bc52ac3866f4520d695b23a">enableLighting</a> ()</td></tr>
<tr class="memdesc:acf9363543bc52ac3866f4520d695b23a"><td class="mdescLeft">&#160;</td><td class="mdescRight">Enables lighting. <br/></td></tr>
<tr class="separator:acf9363543bc52ac3866f4520d695b23a"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a300e9e0ee4ca6f55ffd54791b34d4d0b"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a300e9e0ee4ca6f55ffd54791b34d4d0b"></a>
void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_game_play.html#a300e9e0ee4ca6f55ffd54791b34d4d0b">disableLighting</a> ()</td></tr>
<tr class="memdesc:a300e9e0ee4ca6f55ffd54791b34d4d0b"><td class="mdescLeft">&#160;</td><td class="mdescRight">Disables lighting. <br/></td></tr>
<tr class="separator:a300e9e0ee4ca6f55ffd54791b34d4d0b"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ab171e913ca5dc7e981521e4abcd4cb4a"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ab171e913ca5dc7e981521e4abcd4cb4a"></a>
void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_game_play.html#ab171e913ca5dc7e981521e4abcd4cb4a">handleEvents</a> ()</td></tr>
<tr class="memdesc:ab171e913ca5dc7e981521e4abcd4cb4a"><td class="mdescLeft">&#160;</td><td class="mdescRight">Handles all the human player keyboard and mouse events. <br/></td></tr>
<tr class="separator:ab171e913ca5dc7e981521e4abcd4cb4a"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ad442c60d1d886aaa310b129b7fd75224"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ad442c60d1d886aaa310b129b7fd75224"></a>
void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_game_play.html#ad442c60d1d886aaa310b129b7fd75224">startCameraRotation</a> ()</td></tr>
<tr class="memdesc:ad442c60d1d886aaa310b129b7fd75224"><td class="mdescLeft">&#160;</td><td class="mdescRight">Starts the camera rotation and updates the start and end position of the camera. <br/></td></tr>
<tr class="separator:ad442c60d1d886aaa310b129b7fd75224"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:af78aaad25de23258dd479cb18c10ab6a"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="af78aaad25de23258dd479cb18c10ab6a"></a>
void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_game_play.html#af78aaad25de23258dd479cb18c10ab6a">onPauseGame</a> ()</td></tr>
<tr class="memdesc:af78aaad25de23258dd479cb18c10ab6a"><td class="mdescLeft">&#160;</td><td class="mdescRight">If the internal game state changed to PAUSE, this method is called. <br/></td></tr>
<tr class="separator:af78aaad25de23258dd479cb18c10ab6a"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a063a413a5c7a2c75e2078179734e82be"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a063a413a5c7a2c75e2078179734e82be"></a>
void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_game_play.html#a063a413a5c7a2c75e2078179734e82be">onResumeGame</a> ()</td></tr>
<tr class="memdesc:a063a413a5c7a2c75e2078179734e82be"><td class="mdescLeft">&#160;</td><td class="mdescRight">If the internal game state was PAUSE and is now AI_ON_TURN or PLAYER_ON_TURN. <br/></td></tr>
<tr class="separator:a063a413a5c7a2c75e2078179734e82be"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a21066f597c360f52bba7f5eef852100a"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a21066f597c360f52bba7f5eef852100a"></a>
void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_game_play.html#a21066f597c360f52bba7f5eef852100a">onSaveGame</a> ()</td></tr>
<tr class="memdesc:a21066f597c360f52bba7f5eef852100a"><td class="mdescLeft">&#160;</td><td class="mdescRight">If the player wants to save the game, the internal game state changes to SAVE_GAME. <br/></td></tr>
<tr class="separator:a21066f597c360f52bba7f5eef852100a"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a68c51e693ae04b3b4c41fe5beca7a336"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a68c51e693ae04b3b4c41fe5beca7a336"></a>
void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_game_play.html#a68c51e693ae04b3b4c41fe5beca7a336">onSaveSlot1</a> ()</td></tr>
<tr class="memdesc:a68c51e693ae04b3b4c41fe5beca7a336"><td class="mdescLeft">&#160;</td><td class="mdescRight">This must be called when saving the current game to game slot 1. <br/></td></tr>
<tr class="separator:a68c51e693ae04b3b4c41fe5beca7a336"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a42685277312fe9a727d9c6f603eec081"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a42685277312fe9a727d9c6f603eec081"></a>
void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_game_play.html#a42685277312fe9a727d9c6f603eec081">onSaveSlot2</a> ()</td></tr>
<tr class="memdesc:a42685277312fe9a727d9c6f603eec081"><td class="mdescLeft">&#160;</td><td class="mdescRight">This must be called when saving the current game to game slot 2. <br/></td></tr>
<tr class="separator:a42685277312fe9a727d9c6f603eec081"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ab9cb6b539cc813c1ea254ad1d56c4591"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ab9cb6b539cc813c1ea254ad1d56c4591"></a>
void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_game_play.html#ab9cb6b539cc813c1ea254ad1d56c4591">onSaveSlot3</a> ()</td></tr>
<tr class="memdesc:ab9cb6b539cc813c1ea254ad1d56c4591"><td class="mdescLeft">&#160;</td><td class="mdescRight">This must be called when saving the current game to game slot 3. <br/></td></tr>
<tr class="separator:ab9cb6b539cc813c1ea254ad1d56c4591"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ac5138042af245e5410e854e7beaa780a"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_game_play.html#ac5138042af245e5410e854e7beaa780a">saveGameToSlot</a> (unsigned int slot)</td></tr>
<tr class="memdesc:ac5138042af245e5410e854e7beaa780a"><td class="mdescLeft">&#160;</td><td class="mdescRight">Saves the game at a given slot.  <a href="#ac5138042af245e5410e854e7beaa780a">More...</a><br/></td></tr>
<tr class="separator:ac5138042af245e5410e854e7beaa780a"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:abe6e84acbf534cf6d3a5152132e143bb"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="abe6e84acbf534cf6d3a5152132e143bb"></a>
void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_game_play.html#abe6e84acbf534cf6d3a5152132e143bb">onMenuSaveBack</a> ()</td></tr>
<tr class="memdesc:abe6e84acbf534cf6d3a5152132e143bb"><td class="mdescLeft">&#160;</td><td class="mdescRight">Changes the internal state to PAUSE. <br/></td></tr>
<tr class="separator:abe6e84acbf534cf6d3a5152132e143bb"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:acfd5bcec7ecfe767f3e42617088fd0ad"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="acfd5bcec7ecfe767f3e42617088fd0ad"></a>
void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_game_play.html#acfd5bcec7ecfe767f3e42617088fd0ad">onLeaveGame</a> ()</td></tr>
<tr class="memdesc:acfd5bcec7ecfe767f3e42617088fd0ad"><td class="mdescLeft">&#160;</td><td class="mdescRight">Calls the players to abort the current turn and leaves the game. <br/></td></tr>
<tr class="separator:acfd5bcec7ecfe767f3e42617088fd0ad"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pri-attribs"></a>
Private Attributes</h2></td></tr>
<tr class="memitem:aa05a2e43fc4d518712e38a3593efef57"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="aa05a2e43fc4d518712e38a3593efef57"></a>
<a class="el" href="class_state_machine.html">StateMachine</a> &amp;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_game_play.html#aa05a2e43fc4d518712e38a3593efef57">m_fsm</a></td></tr>
<tr class="memdesc:aa05a2e43fc4d518712e38a3593efef57"><td class="mdescLeft">&#160;</td><td class="mdescRight">The state machine to access window functions. <br/></td></tr>
<tr class="separator:aa05a2e43fc4d518712e38a3593efef57"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aff3325cab4d126d6269e95627f0f391a"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="aff3325cab4d126d6269e95627f0f391a"></a>
int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_game_play.html#aff3325cab4d126d6269e95627f0f391a">m_rotateFrom</a></td></tr>
<tr class="memdesc:aff3325cab4d126d6269e95627f0f391a"><td class="mdescLeft">&#160;</td><td class="mdescRight">Number in degree (0-360 deg) to rotate from/to. <br/></td></tr>
<tr class="separator:aff3325cab4d126d6269e95627f0f391a"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a402613873a50aa4f6f8b246ecbe04d4f"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a402613873a50aa4f6f8b246ecbe04d4f"></a>
int&#160;</td><td class="memItemRight" valign="bottom"><b>m_rotateTo</b></td></tr>
<tr class="separator:a402613873a50aa4f6f8b246ecbe04d4f"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a99fd5d355de5bbbc2a46fb40c7b40ed4"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a99fd5d355de5bbbc2a46fb40c7b40ed4"></a>
<a class="el" href="class_game_play.html#a9bbbd1c2193ee3046f1b0f25035fa616">GameMode</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_game_play.html#a99fd5d355de5bbbc2a46fb40c7b40ed4">m_gameMode</a></td></tr>
<tr class="memdesc:a99fd5d355de5bbbc2a46fb40c7b40ed4"><td class="mdescLeft">&#160;</td><td class="mdescRight">The game mode, one of: PLAYER_VS_AI or AI_VS_AI. <br/></td></tr>
<tr class="separator:a99fd5d355de5bbbc2a46fb40c7b40ed4"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ab38ac3510b9435896795a2b291bf9949"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ab38ac3510b9435896795a2b291bf9949"></a>
PlayerColor&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_game_play.html#ab38ac3510b9435896795a2b291bf9949">m_humanPlayerColor</a></td></tr>
<tr class="memdesc:ab38ac3510b9435896795a2b291bf9949"><td class="mdescLeft">&#160;</td><td class="mdescRight">The color of the human player. <br/></td></tr>
<tr class="separator:ab38ac3510b9435896795a2b291bf9949"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a667d7e1a2bd4484382871052a76ef7e0"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a667d7e1a2bd4484382871052a76ef7e0"></a>
bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_game_play.html#a667d7e1a2bd4484382871052a76ef7e0">m_lockCamera</a></td></tr>
<tr class="memdesc:a667d7e1a2bd4484382871052a76ef7e0"><td class="mdescLeft">&#160;</td><td class="mdescRight">Flag to lock the camera rotation on each turn change. <br/></td></tr>
<tr class="separator:a667d7e1a2bd4484382871052a76ef7e0"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a98fcc876a9da4c8896670ef67600cf4e"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a98fcc876a9da4c8896670ef67600cf4e"></a>
ArrowNavigationHandlerPtr&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_game_play.html#a98fcc876a9da4c8896670ef67600cf4e">m_arrowNavHandler</a></td></tr>
<tr class="memdesc:a98fcc876a9da4c8896670ef67600cf4e"><td class="mdescLeft">&#160;</td><td class="mdescRight">Smart pointer to the keyboard navigation handler to manage human field navigation. <br/></td></tr>
<tr class="separator:a98fcc876a9da4c8896670ef67600cf4e"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a054f174f982b9aa8e7bbe31ee3a185aa"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a054f174f982b9aa8e7bbe31ee3a185aa"></a>
ResourceInitializerPtr&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_game_play.html#a054f174f982b9aa8e7bbe31ee3a185aa">m_resourceInitializer</a></td></tr>
<tr class="memdesc:a054f174f982b9aa8e7bbe31ee3a185aa"><td class="mdescLeft">&#160;</td><td class="mdescRight">Smart pointer to the resource initializer. <br/></td></tr>
<tr class="separator:a054f174f982b9aa8e7bbe31ee3a185aa"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ac9933faee75d6e5f0e630d593cb4fa0f"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ac9933faee75d6e5f0e630d593cb4fa0f"></a>
std::vector&lt; <a class="el" href="class_turn.html">Turn</a> &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_game_play.html#ac9933faee75d6e5f0e630d593cb4fa0f">m_possibleTurns</a></td></tr>
<tr class="memdesc:ac9933faee75d6e5f0e630d593cb4fa0f"><td class="mdescLeft">&#160;</td><td class="mdescRight">All possible turns to take for a selected figure/model. <br/></td></tr>
<tr class="separator:ac9933faee75d6e5f0e630d593cb4fa0f"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:af5e415fc449d45c005861160bfacbe9e"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="af5e415fc449d45c005861160bfacbe9e"></a>
std::promise&lt; <a class="el" href="class_turn.html">Turn</a> &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_game_play.html#af5e415fc449d45c005861160bfacbe9e">m_promisedPlayerTurn</a></td></tr>
<tr class="memdesc:af5e415fc449d45c005861160bfacbe9e"><td class="mdescLeft">&#160;</td><td class="mdescRight">Holds the promise during fulfillment. <br/></td></tr>
<tr class="separator:af5e415fc449d45c005861160bfacbe9e"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a346850e0c84c8799cffc55efebae9e91"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a346850e0c84c8799cffc55efebae9e91"></a>
struct <a class="el" href="struct_game_play_1_1_keyboard_counter.html">GamePlay::KeyboardCounter</a>&#160;</td><td class="memItemRight" valign="bottom"><b>m_kCounter</b></td></tr>
<tr class="separator:a346850e0c84c8799cffc55efebae9e91"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a8295f5fee002bad263bdecd70e1ba2ed"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a8295f5fee002bad263bdecd70e1ba2ed"></a>
std::array&lt; <a class="el" href="struct_piece.html">Piece</a>, 64 &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_game_play.html#a8295f5fee002bad263bdecd70e1ba2ed">m_chessBoardState</a></td></tr>
<tr class="memdesc:a8295f5fee002bad263bdecd70e1ba2ed"><td class="mdescLeft">&#160;</td><td class="mdescRight">Holds the 64 field chess board state with models, types, colors, ... <br/></td></tr>
<tr class="separator:a8295f5fee002bad263bdecd70e1ba2ed"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a177914ef7eda1e6686566490264f3ce7"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a177914ef7eda1e6686566490264f3ce7"></a>
<a class="el" href="class_game_state.html">GameState</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_game_play.html#a177914ef7eda1e6686566490264f3ce7">m_gameState</a></td></tr>
<tr class="memdesc:a177914ef7eda1e6686566490264f3ce7"><td class="mdescLeft">&#160;</td><td class="mdescRight">Holds the whole game state. <br/></td></tr>
<tr class="separator:a177914ef7eda1e6686566490264f3ce7"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ad72c0101f86bf564f65c3f457d4694fc"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ad72c0101f86bf564f65c3f457d4694fc"></a>
struct <a class="el" href="struct_game_play_1_1_captured_pieces.html">GamePlay::CapturedPieces</a>&#160;</td><td class="memItemRight" valign="bottom"><b>m_capturedPieces</b></td></tr>
<tr class="separator:ad72c0101f86bf564f65c3f457d4694fc"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aa830f0dc8cecfd1cb5408ec0ffdbea59"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="aa830f0dc8cecfd1cb5408ec0ffdbea59"></a>
enum <a class="el" href="class_game_play.html#a5980fe6836e5b78acc8bbbec79d659c6">GamePlay::States</a>&#160;</td><td class="memItemRight" valign="bottom"><b>m_nextState</b></td></tr>
<tr class="separator:aa830f0dc8cecfd1cb5408ec0ffdbea59"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a7ef021ce910801a1518447ae398f2833"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a7ef021ce910801a1518447ae398f2833"></a>
enum <a class="el" href="class_game_play.html#a74b1558e794d5ae8e60381c33111f05f">GamePlay::InternalState</a>&#160;</td><td class="memItemRight" valign="bottom"><b>m_internalState</b></td></tr>
<tr class="separator:a7ef021ce910801a1518447ae398f2833"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a6dfb9cde44f3061d069d4e3d45351bfb"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a6dfb9cde44f3061d069d4e3d45351bfb"></a>
enum <a class="el" href="class_game_play.html#a74b1558e794d5ae8e60381c33111f05f">GamePlay::InternalState</a>&#160;</td><td class="memItemRight" valign="bottom"><b>m_lastInternalState</b></td></tr>
<tr class="separator:a6dfb9cde44f3061d069d4e3d45351bfb"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a5ebc4119290dfc3114bfeef80a74ade7"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a5ebc4119290dfc3114bfeef80a74ade7"></a>
enum <a class="el" href="class_game_play.html#a66aa55b2891b88080aef650bd0a42bdb">GamePlay::PlayerState</a>&#160;</td><td class="memItemRight" valign="bottom"><b>m_playerState</b></td></tr>
<tr class="separator:a5ebc4119290dfc3114bfeef80a74ade7"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a5b0bd4112415c3caf5abc3b97a6d2b7c"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a5b0bd4112415c3caf5abc3b97a6d2b7c"></a>
<a class="el" href="class_turn.html">Turn</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_game_play.html#a5b0bd4112415c3caf5abc3b97a6d2b7c">m_promotionTurns</a> [4]</td></tr>
<tr class="memdesc:a5b0bd4112415c3caf5abc3b97a6d2b7c"><td class="mdescLeft">&#160;</td><td class="mdescRight">Holds the possible promotion turns for the human player. <br/></td></tr>
<tr class="separator:a5b0bd4112415c3caf5abc3b97a6d2b7c"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ab19bdf0846e18226d8c538262aa8ca25"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ab19bdf0846e18226d8c538262aa8ca25"></a>
std::deque&lt; <a class="el" href="struct_game_play_1_1_player_turn.html">PlayerTurn</a> &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_game_play.html#ab19bdf0846e18226d8c538262aa8ca25">m_playerTurns</a></td></tr>
<tr class="memdesc:ab19bdf0846e18226d8c538262aa8ca25"><td class="mdescLeft">&#160;</td><td class="mdescRight">Holds all the human player made turns. <br/></td></tr>
<tr class="separator:ab19bdf0846e18226d8c538262aa8ca25"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:afe1496c140111c6a6680754fc0a2d277"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="afe1496c140111c6a6680754fc0a2d277"></a>
PlayerColor&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_game_play.html#afe1496c140111c6a6680754fc0a2d277">m_lastPlayer</a></td></tr>
<tr class="memdesc:afe1496c140111c6a6680754fc0a2d277"><td class="mdescLeft">&#160;</td><td class="mdescRight">The last player who was on turn. <br/></td></tr>
<tr class="separator:afe1496c140111c6a6680754fc0a2d277"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a0d85827a32cecdbefd05d8e959dfbe0f"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a0d85827a32cecdbefd05d8e959dfbe0f"></a>
<a class="el" href="class_turn.html">Turn</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_game_play.html#a0d85827a32cecdbefd05d8e959dfbe0f">m_lastTurn</a></td></tr>
<tr class="memdesc:a0d85827a32cecdbefd05d8e959dfbe0f"><td class="mdescLeft">&#160;</td><td class="mdescRight">The last turn which was made. <br/></td></tr>
<tr class="separator:a0d85827a32cecdbefd05d8e959dfbe0f"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aa352e55db65724b3a72ecb1c5014aaf0"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="aa352e55db65724b3a72ecb1c5014aaf0"></a>
bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_game_play.html#aa352e55db65724b3a72ecb1c5014aaf0">m_firstTurn</a></td></tr>
<tr class="memdesc:aa352e55db65724b3a72ecb1c5014aaf0"><td class="mdescLeft">&#160;</td><td class="mdescRight">Flag, if the first turn was made. For camera rotation. <br/></td></tr>
<tr class="separator:aa352e55db65724b3a72ecb1c5014aaf0"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ae927606f6049f0860b365c65864e0cbd"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ae927606f6049f0860b365c65864e0cbd"></a>
AnimationHelperPtr&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_game_play.html#ae927606f6049f0860b365c65864e0cbd">m_animationHelperCamera</a></td></tr>
<tr class="memdesc:ae927606f6049f0860b365c65864e0cbd"><td class="mdescLeft">&#160;</td><td class="mdescRight">Animation helpers to handle (time dependent) animations. <br/></td></tr>
<tr class="separator:ae927606f6049f0860b365c65864e0cbd"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:af774d0bb4253f6ec0379f55767d8ad0a"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="af774d0bb4253f6ec0379f55767d8ad0a"></a>
AnimationHelperPtr&#160;</td><td class="memItemRight" valign="bottom"><b>m_animationHelperBackground</b></td></tr>
<tr class="separator:af774d0bb4253f6ec0379f55767d8ad0a"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a68c1f30fdb59c42170cbdcc19b5a8d6d"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a68c1f30fdb59c42170cbdcc19b5a8d6d"></a>
ChessSetPtr&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_game_play.html#a68c1f30fdb59c42170cbdcc19b5a8d6d">m_chessSet</a></td></tr>
<tr class="memdesc:a68c1f30fdb59c42170cbdcc19b5a8d6d"><td class="mdescLeft">&#160;</td><td class="mdescRight">Smart pointer to the chess set. <br/></td></tr>
<tr class="separator:a68c1f30fdb59c42170cbdcc19b5a8d6d"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aff0f0db570f8b729553b2e5af5252232"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="aff0f0db570f8b729553b2e5af5252232"></a>
Menu2DPtr&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_game_play.html#aff0f0db570f8b729553b2e5af5252232">m_pauseMenuMain</a></td></tr>
<tr class="memdesc:aff0f0db570f8b729553b2e5af5252232"><td class="mdescLeft">&#160;</td><td class="mdescRight">Smart pointer to pause and save menu. <br/></td></tr>
<tr class="separator:aff0f0db570f8b729553b2e5af5252232"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a8c25585312f2c3d591d1b23772b0118e"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a8c25585312f2c3d591d1b23772b0118e"></a>
Menu2DPtr&#160;</td><td class="memItemRight" valign="bottom"><b>m_pauseMenuSave</b></td></tr>
<tr class="separator:a8c25585312f2c3d591d1b23772b0118e"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a798f9cec191a02cc1923d57518719949"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a798f9cec191a02cc1923d57518719949"></a>
struct <a class="el" href="struct_game_play_1_1_message_box.html">GamePlay::MessageBox</a>&#160;</td><td class="memItemRight" valign="bottom"><b>m_messageBox</b></td></tr>
<tr class="separator:a798f9cec191a02cc1923d57518719949"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a07152dc4efcaee05b21f2e69eac4bd3a"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a07152dc4efcaee05b21f2e69eac4bd3a"></a>
GLfloat&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_game_play.html#a07152dc4efcaee05b21f2e69eac4bd3a">m_lightPos0</a> [3]</td></tr>
<tr class="memdesc:a07152dc4efcaee05b21f2e69eac4bd3a"><td class="mdescLeft">&#160;</td><td class="mdescRight">The first light position. <br/></td></tr>
<tr class="separator:a07152dc4efcaee05b21f2e69eac4bd3a"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:af1140d562fd98d7448e52177cfbcc837"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="af1140d562fd98d7448e52177cfbcc837"></a>
GLfloat&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_game_play.html#af1140d562fd98d7448e52177cfbcc837">m_lightPos1</a> [3]</td></tr>
<tr class="memdesc:af1140d562fd98d7448e52177cfbcc837"><td class="mdescLeft">&#160;</td><td class="mdescRight">The second light position. <br/></td></tr>
<tr class="separator:af1140d562fd98d7448e52177cfbcc837"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:abee5ef6ad1e89a8d495513dad299f133"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="abee5ef6ad1e89a8d495513dad299f133"></a>
AbstractPlayerPtr&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_game_play.html#abee5ef6ad1e89a8d495513dad299f133">m_firstPlayer</a></td></tr>
<tr class="memdesc:abee5ef6ad1e89a8d495513dad299f133"><td class="mdescLeft">&#160;</td><td class="mdescRight">Smart pointer for the player. <br/></td></tr>
<tr class="separator:abee5ef6ad1e89a8d495513dad299f133"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:af0d4d160bc16b1b8b6f12c42e9b0c5fa"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="af0d4d160bc16b1b8b6f12c42e9b0c5fa"></a>
AbstractPlayerPtr&#160;</td><td class="memItemRight" valign="bottom"><b>m_secondPlayer</b></td></tr>
<tr class="separator:af0d4d160bc16b1b8b6f12c42e9b0c5fa"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a4119f96d8b222d16d232082ab2884f1f"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a4119f96d8b222d16d232082ab2884f1f"></a>
AbstractGameLogicPtr&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_game_play.html#a4119f96d8b222d16d232082ab2884f1f">m_gameLogic</a></td></tr>
<tr class="memdesc:a4119f96d8b222d16d232082ab2884f1f"><td class="mdescLeft">&#160;</td><td class="mdescRight">Smart pointer for the game logic. <br/></td></tr>
<tr class="separator:a4119f96d8b222d16d232082ab2884f1f"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a6fcf631d2f2c73225c4b225cfc80af98"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a6fcf631d2f2c73225c4b225cfc80af98"></a>
GuiObserverPtr&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_game_play.html#a6fcf631d2f2c73225c4b225cfc80af98">m_observer</a></td></tr>
<tr class="memdesc:a6fcf631d2f2c73225c4b225cfc80af98"><td class="mdescLeft">&#160;</td><td class="mdescRight">Smart pointer for the observer. <br/></td></tr>
<tr class="separator:a6fcf631d2f2c73225c4b225cfc80af98"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a90f8264657c06e37852a5aac537a57b9"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a90f8264657c06e37852a5aac537a57b9"></a>
ObserverDispatcherProxyPtr&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_game_play.html#a90f8264657c06e37852a5aac537a57b9">m_observerProxy</a></td></tr>
<tr class="memdesc:a90f8264657c06e37852a5aac537a57b9"><td class="mdescLeft">&#160;</td><td class="mdescRight">Smart pointer for the observer proxy. <br/></td></tr>
<tr class="separator:a90f8264657c06e37852a5aac537a57b9"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a3d2fc85d50bceae7970cca44f047ba21"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a3d2fc85d50bceae7970cca44f047ba21"></a>
PlayerDispatcherProxyPtr&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_game_play.html#a3d2fc85d50bceae7970cca44f047ba21">m_playerProxy</a></td></tr>
<tr class="memdesc:a3d2fc85d50bceae7970cca44f047ba21"><td class="mdescLeft">&#160;</td><td class="mdescRight">Smart pointer for the player proxy. <br/></td></tr>
<tr class="separator:a3d2fc85d50bceae7970cca44f047ba21"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a477c98347361e879824a47a100302271"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a477c98347361e879824a47a100302271"></a>
std::string&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_game_play.html#a477c98347361e879824a47a100302271">m_initialFen</a></td></tr>
<tr class="memdesc:a477c98347361e879824a47a100302271"><td class="mdescLeft">&#160;</td><td class="mdescRight">The initial FEN notation string to load the game state from. <br/></td></tr>
<tr class="separator:a477c98347361e879824a47a100302271"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a9e8c3ecd9ec4d13fdd9ffd4a73bbab9f"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a9e8c3ecd9ec4d13fdd9ffd4a73bbab9f"></a>
Logging::Logger&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_game_play.html#a9e8c3ecd9ec4d13fdd9ffd4a73bbab9f">m_log</a></td></tr>
<tr class="memdesc:a9e8c3ecd9ec4d13fdd9ffd4a73bbab9f"><td class="mdescLeft">&#160;</td><td class="mdescRight">boost::log Logger for universal info, debug and error logging. <br/></td></tr>
<tr class="separator:a9e8c3ecd9ec4d13fdd9ffd4a73bbab9f"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
<div class="textblock"><p>Class which holds the state <a class="el" href="class_game_play.html" title="Class which holds the state GamePlay. ">GamePlay</a>. </p>
<p>This state is the essential part of all states. The whole game play is hold in this state.</p>
<dl class="section note"><dt>Note</dt><dd>To <a class="el" href="class_game_play.html#aa488735535fde3fa3ac41ee94112141e" title="Runs the current state and does all the work. ">run()</a> a state, first <a class="el" href="class_game_play.html#a265e1c47781f3ab890a648c9811738d7" title="Enters the state for the first time. ">enter()</a> the state. </dd></dl>
</div><h2 class="groupheader">Constructor &amp; Destructor Documentation</h2>
<a class="anchor" id="aac535480eb47e416b1bb0cd6c566043b"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">GamePlay::GamePlay </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="class_game_play.html#a9bbbd1c2193ee3046f1b0f25035fa616">GameMode</a>&#160;</td>
          <td class="paramname"><em>mode</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">PlayerColor&#160;</td>
          <td class="paramname"><em>humanPlayerColor</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">std::string&#160;</td>
          <td class="paramname"><em>initialFen</em> = <code>&quot;&quot;</code>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Creates a new game. </p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramname">mode</td><td>The GameMode (<em>AI vs. AI</em> or <em>Player vs. AI</em>). </td></tr>
    <tr><td class="paramname">firstPlayerColor</td><td>The color of the player which takes the first turn. </td></tr>
    <tr><td class="paramname">initialFen</td><td>If set overrides the configured initial FEN </td></tr>
  </table>
  </dd>
</dl>

</div>
</div>
<h2 class="groupheader">Member Function Documentation</h2>
<a class="anchor" id="acc1dfc5a3291fac745a7811d36a26ad5"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">std::future&lt; <a class="el" href="class_turn.html">Turn</a> &gt; GamePlay::doMakePlayerTurn </td>
          <td>(</td>
          <td class="paramname"></td><td>)</td>
          <td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Tells the human to make a turn. </p>
<dl class="section return"><dt>Returns</dt><dd>The <a class="el" href="class_turn.html" title="Represents a chess turn. ">Turn</a> as a future. </dd></dl>

</div>
</div>
<a class="anchor" id="a265e1c47781f3ab890a648c9811738d7"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">void GamePlay::enter </td>
          <td>(</td>
          <td class="paramname"></td><td>)</td>
          <td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">override</span><span class="mlabel">virtual</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>Enters the state for the first time. </p>
<p>This will setup all the state related stuff. </p>
<dl class="section note"><dt>Note</dt><dd>To <a class="el" href="class_game_play.html#aa488735535fde3fa3ac41ee94112141e" title="Runs the current state and does all the work. ">run()</a> the current state, first <a class="el" href="class_game_play.html#a265e1c47781f3ab890a648c9811738d7" title="Enters the state for the first time. ">enter()</a> it. </dd></dl>

<p>Implements <a class="el" href="class_abstract_state.html#a6c54a7c162cd2bce6ddb83d5eef8ec4c">AbstractState</a>.</p>

</div>
</div>
<a class="anchor" id="af635ce486e5bc9b3bdf21241f6737000"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">void GamePlay::exit </td>
          <td>(</td>
          <td class="paramname"></td><td>)</td>
          <td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">override</span><span class="mlabel">virtual</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>Exits the current state and cleans up all allocated resources. </p>
<dl class="section note"><dt>Note</dt><dd>This is the last method to call, before the object is deleted. </dd></dl>

<p>Implements <a class="el" href="class_abstract_state.html#a12e500a1e81bcb710d6b50aa99695e3a">AbstractState</a>.</p>

</div>
</div>
<a class="anchor" id="ae5056701f898482fc4dc076f683f5920"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">string GamePlay::getPieceName </td>
          <td>(</td>
          <td class="paramtype">int&#160;</td>
          <td class="paramname"><em>pieceNumber</em></td><td>)</td>
          <td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">private</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>The functions returns the name of the piece/model for the given number. </p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramname">pieceNumber</td><td>A number between 0 and 6 corresponding to the PieceType. </td></tr>
  </table>
  </dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>The name of the piece. </dd></dl>

</div>
</div>
<a class="anchor" id="a21dced2f42338f59198c44a84e3f151a"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">void GamePlay::initPieceCounters </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="class_game_state.html">GameState</a> &amp;&#160;</td>
          <td class="paramname"><em>initialGameState</em></td><td>)</td>
          <td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">private</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>Initializes the counters for the stricken models. </p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramname">initialGameState</td><td>The initial game state to init the game from. </td></tr>
  </table>
  </dd>
</dl>

</div>
</div>
<a class="anchor" id="a84f872fda46a5fc467744a1b4c404c47"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void GamePlay::onPlayerAbortTurn </td>
          <td>(</td>
          <td class="paramname"></td><td>)</td>
          <td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>If the human player aborts his current turn, this method switches to the AI player. </p>
<dl class="section note"><dt>Note</dt><dd>This method currently only works for PLAYER_VS_AI. If there are in the future other game modes, this must be corrected. </dd></dl>

</div>
</div>
<a class="anchor" id="a485bd261cd18ef597db289f129ce7c70"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void GamePlay::onPlayerIsOnTurn </td>
          <td>(</td>
          <td class="paramtype">PlayerColor&#160;</td>
          <td class="paramname"><em>who</em></td><td>)</td>
          <td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>This method changed the internal state to interact with a human player if the game mode is PLAYER_VS_AI. </p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramname">who</td><td>The color of the player who's on turn. </td></tr>
  </table>
  </dd>
</dl>
<dl class="section note"><dt>Note</dt><dd>This method should be called on each turn start. Otherwise the GUI can't react to keyboard input for a human player. </dd></dl>

</div>
</div>
<a class="anchor" id="aa488735535fde3fa3ac41ee94112141e"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="class_abstract_state.html">AbstractState</a> * GamePlay::run </td>
          <td>(</td>
          <td class="paramname"></td><td>)</td>
          <td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">override</span><span class="mlabel">virtual</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>Runs the current state and does all the work. </p>
<dl class="section return"><dt>Returns</dt><dd>AbstractState* the state which should be run after this state. A nullptr if the game should be exited. </dd></dl>

<p>Implements <a class="el" href="class_abstract_state.html#afdda3d13dbad7a41987c9e05b705cd9e">AbstractState</a>.</p>

</div>
</div>
<a class="anchor" id="ac5138042af245e5410e854e7beaa780a"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">void GamePlay::saveGameToSlot </td>
          <td>(</td>
          <td class="paramtype">unsigned int&#160;</td>
          <td class="paramname"><em>slot</em></td><td>)</td>
          <td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">private</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>Saves the game at a given slot. </p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramname">slot</td><td>The slot number between 0-2. </td></tr>
  </table>
  </dd>
</dl>

</div>
</div>
<a class="anchor" id="a92f38333245c2e802ab081718b84ab96"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">void GamePlay::setCameraPosition </td>
          <td>(</td>
          <td class="paramtype">float&#160;</td>
          <td class="paramname"><em>degree</em></td><td>)</td>
          <td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">private</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>Calculates the new camera coordinates from a given degree between 0-360 deg and positions the camera in the world space with respect to the animated rotation around the Y-axis. </p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramname">degree</td><td>The angle in degree between 0 - 360. </td></tr>
  </table>
  </dd>
</dl>

</div>
</div>
<a class="anchor" id="ac9a17da80920462436ef112ff66a77d5"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void GamePlay::setGameState </td>
          <td>(</td>
          <td class="paramtype">const <a class="el" href="class_game_state.html">GameState</a> &amp;&#160;</td>
          <td class="paramname"><em>gameState</em></td><td>)</td>
          <td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Sets the game state to the given one. </p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramname">gameState</td><td>The new gameState to set. </td></tr>
  </table>
  </dd>
</dl>

</div>
</div>
<a class="anchor" id="a18222d37c08887971467a535226c6b72"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void GamePlay::setState </td>
          <td>(</td>
          <td class="paramtype">std::array&lt; <a class="el" href="struct_piece.html">Piece</a>, 64 &gt;&#160;</td>
          <td class="paramname"><em>state</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">PlayerColor&#160;</td>
          <td class="paramname"><em>lastPlayer</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="class_turn.html">Turn</a>&#160;</td>
          <td class="paramname"><em>lastTurn</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Method for setting the new chess state. </p>
<p>This method is non-blocking. </p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramname">state</td><td>The current chess board state to set. </td></tr>
    <tr><td class="paramname">lastPlayer</td><td>The player which was last on turn. </td></tr>
    <tr><td class="paramname">lastTurn</td><td>The last turn which was made. </td></tr>
  </table>
  </dd>
</dl>

</div>
</div>
<a class="anchor" id="a046a12f0d7ceb61f4de3ba4cd1ca9b36"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void GamePlay::setState </td>
          <td>(</td>
          <td class="paramtype">std::array&lt; <a class="el" href="struct_piece.html">Piece</a>, 64 &gt;&#160;</td>
          <td class="paramname"><em>state</em></td><td>)</td>
          <td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Method for setting the new chess state. </p>
<p>This method is non-blocking. </p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramname">state</td><td>The current chess board state to set. </td></tr>
  </table>
  </dd>
</dl>
<dl class="section note"><dt>Note</dt><dd>This should only be called one time, when the game starts. </dd></dl>

</div>
</div>
<a class="anchor" id="a7cfdf90a24b76b71d01d292337e080ee"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void GamePlay::startShowText </td>
          <td>(</td>
          <td class="paramtype">std::string&#160;</td>
          <td class="paramname"><em>text</em></td><td>)</td>
          <td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Call this function to draw text on the right bottom side of the viewport. </p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramname">text</td><td>The string to show. </td></tr>
  </table>
  </dd>
</dl>

</div>
</div>
<a class="anchor" id="a0f24d5ef62fec459a516bd4106a67ee4"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void GamePlay::switchToPlayerColor </td>
          <td>(</td>
          <td class="paramtype">PlayerColor&#160;</td>
          <td class="paramname"><em>color</em></td><td>)</td>
          <td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>When the other player is on turn, this method switched the camera position and shows a small text message which player is on turn. </p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramname">color</td><td>The PlayerColor of the current player, which is on turn. </td></tr>
  </table>
  </dd>
</dl>
<dl class="section note"><dt>Note</dt><dd>This should always be called to show a message to the user. </dd></dl>

</div>
</div>
<hr/>The documentation for this class was generated from the following files:<ul>
<li>S:/dev/3dchess/src/gui/states/<a class="el" href="_game_play_8h_source.html">GamePlay.h</a></li>
<li>S:/dev/3dchess/src/gui/states/GamePlay.cpp</li>
</ul>
</div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated on Sun Mar 9 2014 23:12:58 for 3dchess by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.6
</small></address>
</body>
</html>
